﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 23/04/2014
 * Time: 07:25 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Collections.Generic;
using Gestión_UTN.factories;

namespace Gestión_UTN.blimpl
{
    /// <summary>
    /// Description of aprobadablimpl.
    /// </summary>
    public class aprobadablimpl : bl.aprobadabl
    {
        private static da.aprobadada createAprobada = dafactory.createAprobada();
        private static bl.alumnobl createAlumno = blfactory.createAlumno();
        private static bl.materiabl createMateria = blfactory.createMateria();

        public aprobadablimpl()
        {
        }

        public bool SaveAprobada(Gestión_UTN.bo.Aprobadabo apr)
        {
            bool ingresada = false;

            try
            {
                ingresada = (null != apr)
                    ? createAprobada.SaveAprobada(apr.Alumno.Dni, apr.Materia.Id
                        , apr.Nota, apr.Fecha)
                    : false;
            }
            catch (Exception)
            {

                ingresada = false;
            }

            return ingresada;
        }

        public bool DeleteAprobada(Gestión_UTN.bo.Aprobadabo apr)
        {
            bool eliminada = false;

            try
            {
                eliminada = (null != apr)
                    ? createAprobada.DeleteAprobada(apr.Alumno.Dni,
                                                    apr.Materia.Id, apr.Fecha)
                    : false;

            }
            catch (Exception)
            {

                eliminada = false;
            }

            return eliminada;
        }

        public bool ModifyAprobada(Gestión_UTN.bo.Aprobadabo apr, Gestión_UTN.bo.Aprobadabo apr_anterior)
        {
            bool modificada = false;

            try
            {
                modificada = (null != apr && null != apr_anterior)
                    ? createAprobada.ModifyAprobada(apr_anterior.Alumno.Dni, apr_anterior.Materia.Id,
                                                    apr_anterior.Fecha, apr.Alumno.Dni, apr.Materia.Id,
                                                    apr.Nota, apr.Fecha)
                    : false;
            }
            catch (Exception)
            {

                modificada = false;
            }

            return modificada;
        }

        public System.Data.DataTable FindAllAprobadas()
        {
            DataTable tablaAprobadas = null;

            try
            {
                tablaAprobadas = createAprobada.FindAllAprobadas();
            }
            catch (Exception)
            {
                tablaAprobadas = null;
            }

            return tablaAprobadas;
        }

        public System.Collections.Generic.List<Gestión_UTN.bo.Aprobadabo> FindAprobadaByDni(int alu_dni)
        {
            List<bo.Aprobadabo> aprobadas = null;

            try
            {
                List<Entities.Aprobada> aprs = (0 != alu_dni)
                    ? createAprobada.FindAprobadaByDni(alu_dni)
                    : null;

                if (null != aprs)
                {
                    aprobadas = new List<bo.Aprobadabo>();

                    foreach (var a in aprs)
                    {
                        bo.Alumnobo alu = createAlumno.FindAlumnoByDNI(a.Alu_dni);
                        bo.Materiabo mat = createMateria.FindMateriaByMatId(a.Mat_id);

                        bo.Aprobadabo apr = new bo.Aprobadabo(alu, mat, a.Nota, a.Fecha);

                        aprobadas.Add(apr);

                        apr = null;
                    }
                }
            }
            catch (Exception)
            {
                aprobadas = null;
            }

            return aprobadas;
        }

        public System.Collections.Generic.List<Gestión_UTN.bo.Aprobadabo> FindAprobadaByMateria(int mat_id)
        {
            List<bo.Aprobadabo> aprobadas = null;

            try
            {
                List<Entities.Aprobada> aprs = (0 != mat_id)
                    ? createAprobada.FindAprobadaByMateria(mat_id)
                    : null;

                if (null != aprs)
                {
                    aprobadas = new List<bo.Aprobadabo>();

                    foreach (var a in aprs)
                    {
                        bo.Alumnobo alu = createAlumno.FindAlumnoByDNI(a.Alu_dni);
                        bo.Materiabo mat = createMateria.FindMateriaByMatId(a.Mat_id);

                        bo.Aprobadabo apr = new bo.Aprobadabo(alu, mat, a.Nota, a.Fecha);

                        aprobadas.Add(apr);

                        apr = null;
                    }
                }
            }
            catch (Exception)
            {
                aprobadas = null;
            }

            return aprobadas;
        }
    }
}
